import { login, logout } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'

const actions = {
  // 登录
  async login({ commit }, userInfo) {
    const username = userInfo.username.trim()
    const result = await login({ username, password: userInfo.password })
    const { token } = result.data
    commit('SET_TOKEN', token)
  },
  // 退出登录
  logout({ commit }) {
    commit('REMOVETOKEN', '')
  }
}
const mutations = {

  // ③设置存储token的方法
  // 第一次登录要存token
  SET_TOKEN(state, token) {
    state.token = token // 给vuex存
    // console.log('设置')
    setToken(token) // 给cookie存
  },
  // ④删除token的方法
  // 退出需要删除token
  REMOVE_TOKEN(state) {
    state.token = null // 给vuex清空
    removeToken() // 给cookie清空
  },
  // 定义修改用户信息的方法
  SET_USERINFO(state, info) {
    state.userInfo = info
    // state.userInfo = { ...info }
  },
  // 定义删除用户信息的方法  将来退出登录要删除
  REMOVE_USERINFO(state) {
    state.userInfo = null
  }

}
// 发登录请求, 获取token,存token
// const actions = {
//   // ①定义一个登录请求的方法  context是一个对象, 可以调用context.commit()  context.dispatch()
//   // data代表登录页的loginForm对象
//   async login({ commit }, data) {
//     const res = await handleLogin(data)
//     // console.log(res)
//     // axios拿到的返回值, 真正的结果是保存在 res = {data: {success: true, code: 1000, ....}}
//     // if (res.data.success) {
//     // ③触发mutations中的修改token的方法
//     commit('SET_TOKEN', res.token)
//   },
//   async getUserInfo(context) {
//     const res = await getUserInfo()
//     context.commit('SET_USERINFO', res)
//     // console.log(res)
//     return res
//   },

//     // 设置token
//     SET_TOKEN(state, token) {
//         state.token = token
//         setToken(token)
//     },
//     // 清除token
//     REMOVETOKEN(state) {
//         state.token = null
//         removeToken()
//     }
// }
const state = {
  token: getToken()

}

export default {
  namespaced: true,
  actions,
  mutations,
  state
}
